/*
 * Copyright (C) 2009 aileron.cc
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package cc.aileron.orm;

/**
 * @author Aileron
 */
public class TryThradLocal
{
    /**
     * th
     */
    private static final ThreadLocal<Integer> th = new ThreadLocal<Integer>()
    {
        @Override
        protected Integer initialValue()
        {
            return 0;
        }
    };

    /**
     * @param args
     */
    public static void main(final String[] args)
    {
        final Runnable runnable = new Runnable()
        {
            @Override
            public void run()
            {
                System.out.println(Thread.currentThread()
                    .getName() + ":" + count());

                try
                {
                    Thread.sleep(1000);
                }
                catch (final InterruptedException e)
                {
                    e.printStackTrace();
                }

                System.out.println(Thread.currentThread()
                    .getName() + ":" + count());
            }
        };

        new Thread(runnable).start();
        new Thread(runnable).start();
    }

    /**
     * @return value
     */
    static int count()
    {
        final int value = th.get() + 1;
        th.set(value);
        return value;
    }
}
